#include "common/api/server.h"
#include "common/api/server_helper.hpp"

#include "api_controller.h"

#include "logout_handler.h"

namespace Api
{

LogoutHandler::LogoutHandler(
    crow::App<>& crowApplication,
    ApiController* controller
)
    : m_controller(controller)
{
    ADD_CROW_ROUTE_LOGOUT(
        crowApplication,
        [this](
            const Uuids::Uuid& sessionUuid,
            const std::string& user
        ) -> bool
        {
            // TODO: выходить не из сессии, а из user-а
            m_controller->changesManager().removeSession(sessionUuid);
            return m_controller->permissionManager()->logout(sessionUuid);
        }
    );
}

} // namespace Api
